#include <iostream>
class Test
{
public:
    Test() {}
    Test(const Test &t)
    {
        std::cout << "拷贝构造\n";
    }
};
void Print(int &a)
{
    std::cout << "左值引用\n";
}
void Print(int &&a)
{
    std::cout << "右值引用\n";
}
template <typename T>
void func(T &&c)/*模版加双引用，能够同时传左值和右值*/
{
    /*完美转发*/
    Print(std::forward<T>(c));
}

int main()
{
    Test t;
    // func(t);
    int a = 10;
    func(a);
    func(10);
    return 0;
}